{#if loadError} {loadError} {:else} {#await currentUserIdentity} {:then identity} {@const isOwner = identity && (isId ? identity.id : identity.name) === data.username} {#await badgesPromise} {:then badgesResponse} {#if badgesResponse} {#await badgesResponse.clone().json()} {:then ungroupedBadgesAny} {@const ungroupedBadges = castBadgesToIndexedBadges(ungroupedBadgesAny)} {@const isBadgeSelected = selectedBadge && selectedBadge !== undefined && selectedBadge.image && selectedBadge.image !== undefined && !editMode}
{#if !preferences.hide_awc_badges} {#await awcPromise then badges} {#await badges.clone().text() then text} {@const parsedBadges = awcBadgesGrouped(text)} {#if parsedBadges.length > 0} {#each parsedBadges as group}
Anime Watching Club | {group.group}

{#each group.badges as badge, index}
{/each}

{/each} {/if} {/await} {/await} {/if} {#if ungroupedBadges === null} {:else} {@const groupedBadges = Object.entries( groupBadges(removeHiddenBadges(isOwner, ungroupedBadges)) )} {#if authorised}

{/if} {#if isOwner} {@const shadowHidden = ungroupedBadges.filter((badge) => badge.shadow_hidden).length > 0} {#if shadowHidden}

Notice: The Badge Wall overseer has detected badges containing AI-generated material, and your Badge Wall has been shadow hidden.

Please use "Un-shadow Hide Badges" button to unhide your Badge Wall, from where you will be required to use the hide feature to hide these badges from the public, while allowing them to stay visible to you as the account holder.

{:else}
Notice: AniList has begun purging outbound links which contain AI-generated material, this includes Badge Wall. If you have collected badges with AI-generated elements, kindly use the hide feature to hide these badges from the public, while allowing them to stay visible to you as the account holder.

Failure to comply with this request at your earliest convenience will result in the hiding of all badges from your Badge Wall.

{/if}

{#if shadowHidden} {/if} {#if editMode && isOwner} {@const groups = groupedBadges .map((group) => group[0]) .filter((group) => group !== 'Uncategorised')} {@const designers = castAsStringArray([ ...new Set( ungroupedBadges .map((badge) => badge.designer) .filter((designer) => designer !== undefined && designer !== null) .filter( (designer, index, array) => array.indexOf(designer) === index && !array.includes(`@${designer}`) ) ) ])}

{#if error}

{error}

{/if} ({ name: group, url: '#', onClick: () => { const category = document.querySelector('input[name="category"]'); if (category instanceof HTMLInputElement) category.value = group; } }))} header={false} center={false} > Must be full date and time, defaults to now if any fields empty

({ name: designer, url: '#', onClick: () => { const designerField = document.querySelector('input[name="designer"]'); if (designerField instanceof HTMLInputElement) designerField.value = designer; } }))} header={false} center={false} > ({ name: hidden ? 'Hidden' : 'Shown', url: '#', onClick: () => { const hiddenInput = document.querySelector('input[name="hidden"]'); if (hiddenInput instanceof HTMLInputElement) hiddenInput.value = hidden ? 'Hidden' : 'Shown'; } }))} header={false} center={false} > {#if selectedBadge} {$locale().user.badges.editMode.or} {/if}
{/if}
{/if}

{#if ungroupedBadges.length === 0}

{/if} {#each groupedBadges as [category, unsortedBadges]} {@const badges = unsortedBadges.sort( (a, b) => new Date(b.time || 0).getTime() - new Date(a.time || 0).getTime() )}
{category}

{#if groupedBadges[groupedBadges.length - 1][0] !== category}

{/if} {/each} {/if}

{#if isBadgeSelected} {@const anyAdjacentBadgeExists = adjacentBadgeExists(selectedBadge, ungroupedBadges, -1) || adjacentBadgeExists(selectedBadge, ungroupedBadges, 1)} { selectedBadge = undefined; }} > setAdjacentCursor(ungroupedBadges, 1)} onPrevious={() => setAdjacentCursor(ungroupedBadges, -1)} /> {#if anyAdjacentBadgeExists}

{/if} {#if adjacentBadgeExists(selectedBadge, ungroupedBadges, -1)} {/if} {#if adjacentBadgeExists(selectedBadge, ungroupedBadges, 1)} {/if} {/if} {:catch} Could not parse badges {/await} {:else} {/if} {:catch} Could not fetch badges {/await} {:catch} This user's badges could not be loaded. {/await} {/if} {#if true} (importMode = false)} show={importMode}> {$locale().user.badges.importMode.title}

{$locale().user.badges.importMode.importLinks.title} {$locale().user.badges.importMode.importLinks.hint}

{$locale().user.badges.importMode.importReplies}

{$locale().user.badges.importMode.dangerous} {$locale().user.badges.importMode.deleteAll.hint}
{#if importImages && importImages.length > 0}

{$locale({ values: { count: importImages.length } }).user.badges.importMode.importConfirm}  {$locale().user.badges.importMode.importWait} {/if} {/if} (migrateMode = false)} show={migrateMode}> Migrate Category

Leave category empty to migrate all to or from uncategorised.

(hideMode = false)} show={hideMode}> Hide Category If the majority of the badges in a category are shown, the category will be hidden, and vice versa.

Leave category field empty to hide all.